/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.catalogo.delegate;

import com.losalpes.catalogo.bos.CarItem;
import com.losalpes.catalogo.bos.Cliente;
import com.losalpes.catalogo.bos.Mueble;
import com.losalpes.catalogo.excepciones.TiendaLosAlpesException;
import com.losalpes.catalogo.servicios.ClientServiceMock;
import com.losalpes.catalogo.servicios.IClientService;
import com.losalpes.catalogo.servicios.IStoreServiceMock;
import java.util.List;

/**
 *
 * @author AndhyMao
 */
public class TiendaLosAlpesBussinesDelegate {

    private static TiendaLosAlpesBussinesDelegate instance;

    private IClientService clientService;
    private IStoreServiceMock storeService;

    public TiendaLosAlpesBussinesDelegate() {
        clientService = new ClientServiceMock();
    }

    public static TiendaLosAlpesBussinesDelegate getInstance() {
        if (instance == null) {
            instance = new TiendaLosAlpesBussinesDelegate();
        }
        return instance;
    }

    public void addClient(Cliente cliente) throws TiendaLosAlpesException {
        try {
            clientService.add(cliente);
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:addClient: " + e.toString(), e);
        }
    }

    public void editClient(Cliente cliente) throws TiendaLosAlpesException {
        try {
            clientService.edit(cliente);
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:editClient: " + e.toString(), e);
        }
    }

    public void deleteClient(Cliente cliente) throws TiendaLosAlpesException {
        try {
            clientService.delete(cliente);
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:deleteClient: " + e.toString(), e);
        }
    }

    public List<Cliente> findAllClientes() throws TiendaLosAlpesException {
        try {
            return clientService.findAllClientes();
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:findAllClientes: " + e.toString(), e);
        }
    }

    public void addCarItem(CarItem carItem) throws TiendaLosAlpesException {
        try {
            storeService.addToCar(carItem);
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:addCarItem: " + e.toString(), e);
        }
    }

    public List<CarItem> getCarItems() throws TiendaLosAlpesException {
        try {
            return storeService.getCarItems();
        }
        catch (Exception e) {
            throw new TiendaLosAlpesException("TiendaLosAlpesBussinesDelegate:addCarItem: " + e.toString(), e);
        }
    }
}
